<?php
/*
 * planning/popin.phtml
 */
?>
<?php

use RHX\Helper\RHDateTime;
use RHX\Model\Object\XRules;
?>
<?php
$employe	 = $this->employe;
$id	 = $this->id;
$codes	 = $this->codes;
$codec	 = $this->code;
$entree	 = $this->entree;
$sortie	 = $this->sortie;
$pause	 = $this->pause;
$repas	 = $this->repas;
$site	 = $this->site;
$lundi	 = $this->lundi;
$prefix	 = $this->prefix;
$dayName = array(1 => 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
$index = array_search($prefix, $dayName);
$nextIndex = ($index + 1) > 7 ? 1 : $index + 1;
$previousIndex = ($index - 1) < 1 ? 7 : $index - 1;
$entreeDefaut	 = $this->entreeDefaut;
$sortieDefaut	 = $this->sortieDefaut;
// Objets Temporelles
// Entrée
$Entree	 = new RHDateTime();
$Entree->setTime($entree);
$entreeRef	 = new RHDateTime();
$entreeRef->setTime($this->entreeRef);
// Sortie
$Sortie	 = new RHDateTime();
$Sortie->setTime($sortie);
$sortieRef	 = new RHDateTime();
$sortieRef->setTime($this->sortieRef);
/**
 * @var RHX\Model\Object\XData Données PRDA
 */
$dataPRDA	 = $this->dataPRDA;
$retard		 = new RHDateTime();
$retard->setTime($dataPRDA->tempsRetard);
$anticipe	 = new RHDateTime();
$anticipe->setTime($dataPRDA->tempsAnticipe);
?>
<div class="popin-arrow">
    <div class="popin-content">
	<div class="popin-title content-head">
	    <h4>Edition du Planning Semaine</h4>
	</div>
	<div class="popin-code">
	    <h5 style='width: 99%'>Codes d'activité</h5>
	    <div class='popin-code-content'>
		<?php foreach ($codes as $code): ?>
		    <?php $selected = ((int) $codec == (int) $code->id) ? 'selected' : ''; ?>
    		<div class='code <?php echo $selected; ?>' id="code-<?php echo $code->id; ?>">
    		    <div class='code-couleur' style='background: <?php echo $code->couleur; ?>'>
			<?php $class = ((int)$code->id == XRules::EntreeSortie || (int)$code->id == XRules::TransfertEntrant || (int)$code->id == XRules::TransfertSortant)? 'dont-edit' : 'code-link'; ?>
			<a href='#' id="<?php echo $code->id; ?>" class="<?php echo $class; ?>" title='<?php echo $code->libelle; ?>' onclick="return changeCode(<?php echo $code->id; ?>);">
				<?php echo $code->code; ?>
    			</a>
    		    </div>
    		</div>
		<?php endforeach; ?>
	    </div>
	    <div class='text-info' id='info-prda' style='display: none;'>
		<span class='text-primary'>Heure d'entrée : </span><span id='entree_reel' class='heure-value'><?php echo $Entree->hours(); ?></span>,&nbsp;
		<span class='text-primary'>Heure de sortie : </span><span id='sortie_reel' class='heure-value'><?php echo $Sortie->hours(); ?></span>
	    </div>
	</div>
	<div class='popin-other'>
	    <div id='heure-normal'>
		<span class='heure-title'>Heure Entrée</span><br>
		<select id='entree_heure' name='entree_heure'>
		    <?php for ($i = 0; $i < 24; $i++): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $Entree->getH() == (int) $value) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select> :
		<select id='entree_minute' name='entree_minute'>
		    <?php for ($i = 0; $i < 60; $i+= 5): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $Entree->getM() == (int) $value) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select>
		<br>
		<span class='heure-title'>Heure Sortie</span><br>
		<select id='sortie_heure' name='entree_heure'>
		    <?php for ($i = 0; $i < 24; $i++): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $Sortie->getH() == (int) $value) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select> :
		<select id='sortie_minute' name='entree_minute'>
		    <?php for ($i = 0; $i < 60; $i+= 5): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $Sortie->getM() == (int) $value) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select>
	    </div>
	    <div id='heure-prda' style='display: none'>
		<span class='heure-title'>Retard</span><br>
		<select id='retard_heure'>
		    <?php for ($i = 0; $i < 11; $i++): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $retard->getH() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select> :
		<select id='retard_minute'>
		    <?php for ($i = 0; $i < 60; $i+= 5): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $retard->getM() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select>
		<span class='heure-title'>Départ anticipé</span><br>
		<select id='anticipe_heure'>
		    <?php for ($i = 0; $i < 11; $i++): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $anticipe->getH() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select> :
		<select id='anticipe_minute'>
		    <?php for ($i = 0; $i < 60; $i+= 5): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $anticipe->getM() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select>
		<hr style='margin: 5px auto;'>
		<span class='section-title'>Heures de référence</span>
		<span class='heure-title'>Entrée</span><br>
		<select id='entree_heure_ref'>
		    <?php for ($i = 0; $i < 24; $i++): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $entreeRef->getH() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select> :
		<select id='entree_minute_ref'>
		    <?php for ($i = 0; $i < 60; $i+= 5): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $entreeRef->getM() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select>
		<span class='heure-title'>Sortie</span><br>
		<select id='sortie_heure_ref'>
		    <?php for ($i = 0; $i < 24; $i++): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $sortieRef->getH() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select> :
		<select id='sortie_minute_ref'>
		    <?php for ($i = 0; $i < 60; $i+= 5): ?>
			<?php $value		 = ($i < 10) ? '0' . $i : $i; ?>
			<?php $selected	 = ((int) $sortieRef->getM() == $i) ? 'selected="selected"' : ''; ?>
    		    <option value='<?php echo $value; ?>' <?php echo $selected; ?>><?php echo $value; ?></option>
		    <?php endfor; ?>
		</select>
	    </div>
	    <hr style='margin: 5px auto;'>
	    <label>
		Pause : <input type="checkbox" id="pause" name="pause" <?php echo ((int) $pause == 1) ? 'checked="checked"' : '' ?> >
	    </label>
	    <label>
		Repas : <input type="checkbox" id="repas" name="repas" <?php echo ((int) $repas == 1) ? 'checked="checked"' : '' ?> >
	    </label>
	</div>
	<div id='CP' style="display: none; float: left; border: solid 1px #339900; padding: 3px; border-radius: 3px; margin-top: -1em; background: #33cc00; color: #fff;">Durée d'un CP = <b><?php echo $this->dureeCP; ?></b></div>
	<!--hr-->
	<?php
	$debutContrat = new RHDateTime($employe->contrat_debut);
	$dataCP		 = $employe->getDataCP();
	?>
	<div class="info-container" style="font-size: 0.8em;">
	    <span class="info-name"><?php echo $employe->prenom . ' ' . $employe->nom1 ?></span><br>
	    <?php
	    $anciennete	 = $employe->getAnciennete(true);
	    $heureCP = \RHX\Helper\Number::frenchFormat($dataCP['heureFloat']);
	    ?>
	    <span class="info-title">Ancienneté</span> : <span class="info-value"><?php echo $anciennete; ?></span>
	    <span class="info-title">Valeur Congé Payé en H : </span> : <span class="info-value"><?php echo "{$dataCP['heure']} ($heureCP)"; ?></span>
	    <br>
	    <span class="info-title">Horaire Hebdomadaire</span> : <span class="info-value"><?php echo $dataCP['hebdo']; ?> h</span>&nbsp;&nbsp;
	    <span class="info-title">Taux Horaire</span> : <span class="info-value"><?php echo number_format($dataCP['taux'], 2, ',', ' '); ?> €</span>&nbsp;&nbsp;
	    <span class="info-title">Nombre de jour de disponibilité</span> : <span class="info-value"><?php echo $employe->getNbJourDispo(); ?></span>&nbsp;&nbsp;
	</div>
	<!--hr-->
	<div class='popin-button' style='margin-bottom: 5px;'>
	    <?php 
	    $next = $dayName[$nextIndex];
	    $previous = $dayName[$previousIndex];
	    ?>
	    <a href="#" class="btn btn-small btn-info btn-prev" title="Valider et passer à <?php echo $previous; ?>" data-prefix="<?php echo $previous; ?>">Préc.</a>
	    <button class='btn btn-success validate'>Valider</button>
	    <button class='btn btn-inverse' onclick='$(".rhPopover").remove();'>Fermer</button>
	    <a href="#" class="btn btn-small btn-info btn-next" title="Valider et passer à <?php echo $next; ?>" data-prefix="<?php echo $next; ?>">Suiv.</a>
	</div>
	<input type="hidden" id="pl-id" name="id" value="<?php echo $id; ?>" />
	<input type="hidden" id="data-code" name="code" value="<?php echo $codec; ?>" />
	<input type="hidden" id="prefix" name="prefix" value="<?php echo $prefix; ?>" />
	<input type="hidden" id="paye" name="paye" value="" />
	<input type='hidden' id='data-refEntree' name='refEntree' value='<?php echo $entreeRef->hours(); ?>'>
	<input type='hidden' id='data-refSortie' name='refSortie' value='<?php echo $sortieRef->hours(); ?>'>
    </div>
</div>

<script type="text/javascript">
// Chargement
			    $(document).ready(function() {
				// Clic sur le bouton valider
				$('.validate').click(function(e) {
				    e.preventDefault();
				    // Variables
				    id = $('#pl-id').val();
				    code = $('#data-code').val();
				    entree = $('#entree_heure option:selected').val() + ':' + $("#entree_minute option:selected").val();
				    sortie = $('#sortie_heure option:selected').val() + ':' + $("#sortie_minute option:selected").val();
				    pause = ($("#pause").prop('checked')) ? 1 : 0;
				    repas = ($('#repas').prop('checked')) ? 1 : 0;
				    prefix = $('#prefix').val();
				    // Vérification des horaires
				    // verifyHour();

				    //saveAndCalculate(id, code, entree, sortie, pause, repas, prefix);
				    savePlanning(id, code, entree, sortie, pause, repas, prefix);

				    return false;

				    
				    // Ajax
				    ajax = $.ajax({
					type: 'post',
					url: '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'save')) ?>',
					data: '&id=' + id + '&entree=' + entree + '&sortie=' + sortie + '&pause=' + pause + '&repas=' + repas + '&prefix=' + prefix + '&code=' + code
				    });
				    ajax.success(function(saveData) {
					// Assignation des résultats dans le planning
					//alert('#pl-' + id + '-' + prefix + '-code');
					if(code === '<?php echo RHX\Model\Object\XRules::ProblemeRetardDepartAnticipe; ?>'){
					    // Code Probleme Retard Depart Anticipe
					    data = {
						code: code,
						entree: entree,
						sortie: sortie,
						id: id,
						prefix: prefix
					    };
					    json = $.getJSON('<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'jsonGetLateData')) ?>', data, function(result){
						// Variable
						value = result.value;
						retard = result.retard;
						departAnticipe = result.departAnticipe;
						// Traitement
						if(retard.etat){
						    // Il y a retard
						    $('#pl-' + id + '-' + prefix + '-entree').removeClass().addClass('RT');
						}else{
						    // Voie Normale
						    $('#pl-' + id + '-' + prefix + '-entree').removeClass().addClass(codec[code]);
						}
						if(departAnticipe.etat){
						    // Il y a départ anticipé
						    $('#pl-' + id + '-' + prefix + '-sortie').removeClass().addClass('DA');
						}else{
						    // Voie Normale
						    $('#pl-' + id + '-' + prefix + '-sortie').removeClass().addClass(codec[code]);
						}
						// Voie Normale
						// Code
						$('#pl-' + id + '-' + prefix + '-code').removeClass().addClass(codec[code]);
						$('#pl-' + id + '-' + prefix + '-code a').fadeOut().text(codec[code]).fadeIn('normal');
						// Entree
						$('#pl-' + id + '-' + prefix + '-entree a').fadeOut().text(entree).fadeIn('normal');
						// Sortie
						$('#pl-' + id + '-' + prefix + '-sortie a').fadeOut().text(sortie).fadeIn('normal');
						// Pause
						$('#pl-' + id + '-' + prefix + '-pause').removeClass().addClass(codec[code]);
						if (pause === 1) {
						    $('#pl-' + id + '-' + prefix + '-pause a').fadeOut().text('X').fadeIn('normal');
						} else {
						    $('#pl-' + id + '-' + prefix + '-pause a').text('');
						}
						// Repas
						$('#pl-' + id + '-' + prefix + '-repas').removeClass().addClass(codec[code]);
						if (repas === 1) {
						    $('#pl-' + id + '-' + prefix + '-repas a').fadeOut().text('1').fadeIn('normal');
						} else {
						    $('#pl-' + id + '-' + prefix + '-repas a').text('');
						}
					    });
					} else{
					    // Normal Way
					    $('#pl-' + id + '-' + prefix + '-code').removeClass().addClass(codec[code]);
					    $('#pl-' + id + '-' + prefix + '-code a').fadeOut().text(codec[code]).fadeIn('normal');
					    $('#pl-' + id + '-' + prefix + '-entree').removeClass().addClass(codec[code]);
					    $('#pl-' + id + '-' + prefix + '-entree a').fadeOut().text(entree).fadeIn('normal');
					    $('#pl-' + id + '-' + prefix + '-sortie').removeClass().addClass(codec[code]);
					    $('#pl-' + id + '-' + prefix + '-sortie a').fadeOut().text(sortie).fadeIn('normal');
					    $('#pl-' + id + '-' + prefix + '-pause').removeClass().addClass(codec[code]);
					    if (pause === 1) {
						$('#pl-' + id + '-' + prefix + '-pause a').fadeOut().text('X').fadeIn('normal');
					    } else {
						$('#pl-' + id + '-' + prefix + '-pause a').text('');
					    }
					    $('#pl-' + id + '-' + prefix + '-repas').removeClass().addClass(codec[code]);
					    if (repas === 1) {
						$('#pl-' + id + '-' + prefix + '-repas a').fadeOut().text('1').fadeIn('normal');
					    } else {
						$('#pl-' + id + '-' + prefix + '-repas a').text('');
					    }
					}
					// Compteur de retard
					ajaxRT = $.ajax({
					    type: 'post',
					    url : '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'getRetard')) ?>/' + id
					});
					ajaxRT.success(function(data){
					    $('#pl-' + id + '-retard').html(data);
					});
					ajaxRT.error(function(){
					    $('#pl-' + id + '-retard').html('0');
					});
					// Récupération des heures travaillés
					ajax2 = $.ajax({
					    type: 'post',
					    url: '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'getHeureTravaille')) ?>/' + id
					});
					ajax2.success(function(data) {
					    //alert('pl-' + id + '-travail');
					    $('#pl-' + id + '-travail').html(data);
					});
					ajax2.error(function() {
					    $('#pl-' + id + '-travail').fadeOut().html("!00:00!").fadeIn('normal');
					});

					// Récupération des heures non plannifié
					ajax3 = $.ajax({
					    type: 'post',
					    url: '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'getHeureNonPlanifie')) ?>/' + id
					});
					ajax3.success(function(data) {
					    // Parse
					    //data = parseInt(data);
					    if (data.substr(0, 1) === '-') {
						$('#pl-' + id + '-planifie').removeClass().addClass('minusValue');
					    } else {
						$('#pl-' + id + '-planifie').removeClass().addClass('plusValue');
					    }
					    $('#pl-' + id + '-planifie').hide().html(data + 'heure(s)').fadeIn('normal');

					    // Calcul Synthèse
					    jsonData = {
						site: <?php echo $site; ?>,
						lundi: '<?php echo $lundi; ?>',
						prefix: '<?php echo $prefix; ?>'
					    };
					    json = $.getJSON('<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'calculSynthese')); ?>', jsonData, function(result){
						// Remplissage
						$('#' + prefix + '-heure').hide().fadeIn('normal').text(result.heures + ' heures');
						$('#' + prefix + '-mo').hide().fadeIn('normal').text(result.site + ' €');
						$('#' + prefix + '-entrant').hide().fadeIn('normal').text(result.entrant + ' €');
						$('#' + prefix + '-sortant').hide().fadeIn('normal').text(result.sortant + ' €');
						// Mise à jour du nombre de personne à une heure données
						val = $('#heurePresence').text();
						data = {
						    value: val,
						    site: <?php echo $site; ?>,
						    lundi: '<?php echo $lundi; ?>'
						};
						json = $.getJSON('<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'verifyPresence')) ?>', data, function(result){
						    // Remplissage
						    $('#lundiPresent').hide().fadeIn('normal').text(result.lundi);
						    $('#mardiPresent').hide().fadeIn('normal').text(result.mardi);
						    $('#mercrediPresent').hide().fadeIn('normal').text(result.mercredi);
						    $('#jeudiPresent').hide().fadeIn('normal').text(result.jeudi);
						    $('#vendrediPresent').hide().fadeIn('normal').text(result.vendredi);
						    $('#samediPresent').hide().fadeIn('normal').text(result.samedi);
						    $('#dimanchePresent').hide().fadeIn('normal').text(result.dimanche);
						});
					    });

					    // Ferméture
					    $(".rhPopover").remove();
					});
					ajax3.error(function() {
					    $('#pl-' + id + '-planifie').html("# heure(s)");
					});
					
				    });
				    ajax.error(function() {
					alert("Erreur");
				    });
				});
				// Vérification des Heures
				$('#entree_heure, #entree_minute, #sortie_heure, #sortie_minute').change(function(){
				    // Vérification des horaires
				    verifyHour();
				});
				// Heure Retard
				$('#retard_heure, #retard_minute, #anticipe_heure, #anticipe_minute, #entree_heure_ref, #entree_minute_ref, #sortie_heure_ref, #sortie_minute_ref').change(function(){
				    displayPRDA();
				});
<?php if ((int) $codec == XRules::ProblemeRetardDepartAnticipe): ?>
    				    // Affichage du menu PRDA
    				    showPRDA(true);
<?php endif; ?>
    // Ne pas éditer
    $('.dont-edit').click(function(e){
	e.preventDefault();
	showError("Ce code activité n'est pas éditable sous cet interface");
    });
    // Suivant et Précédent
    $('.btn-prev, .btn-next').click(function(e){
	e.preventDefault();
	$prefix = $(this).attr('data-prefix');
	selector = "#pl-<?php echo $id ?>-" + $prefix + "-code";
	// valider et afficher suivant
	$('.validate').click();
	$(selector + ' a').click();
    });
			    });
			    // CODEC
			    var codec = new Array();
<?php foreach ($codes as $c): ?>
    			    codec[<?php echo $c->id; ?>] = "<?php echo $c->code; ?>";
<?php endforeach; ?>
    function savePlanning(id, code, entree, sortie, pause, repas, prefix){
	refEntree = $('#data-refEntree').val();
	refSortie = $('#data-refSortie').val();
	ajaxSave = $.ajax({
	    dataType: 'json',
	    type: 'post',
	    url: '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'savePlanning')) ?>',
	    data: '&id=' + id + '&entree=' + entree + '&sortie=' + sortie + '&pause=' + pause + '&repas=' + repas + '&prefix=' + prefix + '&code=' + code + '&refEntree=' + refEntree + '&refSortie=' + refSortie
	});
	ajaxSave.done(function(result){
	    // Assignation des résultats dans la colonne correspondante
	    selector = '#pl-' + id + '-' + prefix;
	    $(selector + '-code a').fadeOut().text(codec[code]).fadeIn('normal');
	    $(selector + '-entree a').fadeOut().text(entree).fadeIn('normal');
	    $(selector + '-sortie a').fadeOut().text(sortie).fadeIn('normal');
	    if(pause === 1){
		$(selector + '-pause a').fadeOut().text('X').fadeIn('normal');
	    }else{
		$(selector + '-pause a').fadeOut().text('').fadeIn('normal');
	    }
	    if(repas === 1){
		$(selector + '-repas a').fadeOut().text('1').fadeIn('normal');
	    }else{
		$(selector + '-repas a').fadeOut().text('').fadeIn('normal');
	    }
	    // Assignation des classes
	    $(selector + '-code').removeClass().addClass(codec[code]);
	    day = result.day;
	    if(day.retard){
		code = parseInt(code);
		if(code !== <?php echo XRules::Absent ?>){
		    $(selector + '-entree').removeClass().addClass('RT');
		}else{
		    $(selector + '-entree').removeClass().addClass('ABS');
		}
	    }else{
		$(selector + '-entree').removeClass().addClass(codec[code]);
	    }
	    if(day.anticipe){
		$(selector + '-sortie').removeClass().addClass('DA');
	    }else{
		$(selector + '-sortie').removeClass().addClass(codec[code]);
	    }
	    $(selector + '-pause').removeClass().addClass(codec[code]);
	    $(selector + '-repas').removeClass().addClass(codec[code]);
	    // Assignation des résultats des lignes
	    selector = '#pl-' + id;
	    $(selector + '-retard').hide().html(result.heurePRDA + '(' + result.nbPRDA + ')').fadeIn('normal');
	    val = result.nonPlanifie;
	    if (val.substr(0, 1) === '-') {
		$(selector + '-planifie').removeClass().addClass('minusValue');
	    } else {
		$(selector + '-planifie').removeClass().addClass('plusValue');
	    }
	    $(selector + '-planifie').hide().html(val).fadeIn('normal');
	    $('#pl-' + id + '-modulee').hide().html(result.heureModulees).fadeIn('normal');
	    //alert(result.heureModulees);
	    // Calcul des Colonnes
	    calculateCol(id, <?php echo $site; ?>, '<?php echo $lundi; ?>');
	});
	// Ferméture
	$(".rhPopover").remove();
    }
    function saveAndCalculate(id, code, entree, sortie, pause, repas, prefix){
	//alert('Pause : ' + pause + ' Repas ' + repas);
	// Ajax Json
	ajaxSave = $.ajax({
	    dataType: 'json',
	    type: 'post',
	    url : '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'savePlanning')) ?>',
	    data: '&id=' + id + '&entree=' + entree + '&sortie=' + sortie + '&pause=' + pause + '&repas=' + repas + '&prefix=' + prefix + '&code=' + code
	});
	ajaxSave.done(function(data){
	    // Assignation des valeurs
	    result = data.result;
	    selector = '#pl-' + id + '-' + prefix;
	    //alert(selector);
	    // Assignation des valeurs
	    $(selector + '-code a').fadeOut().text(codec[code]).fadeIn('normal');
	    $(selector + '-entree a').fadeOut().text(entree).fadeIn('normal');
	    $(selector + '-sortie a').fadeOut().text(sortie).fadeIn('normal');
	    if(pause === 1){
		$(selector + '-pause a').fadeOut().text('X').fadeIn('normal');
	    }else{
		$(selector + '-pause a').fadeOut().text('').fadeIn('normal');
	    }
	    if(repas === 1){
		$(selector + '-repas a').fadeOut().text('1').fadeIn('normal');
	    }else{
		$(selector + '-repas a').fadeOut().text('').fadeIn('normal');
	    }
	    // Assignation des classes
	    $(selector + '-code').removeClass().addClass(codec[code]);
	    if(result.retard){
		$(selector + '-entree').removeClass().addClass('RT');
	    }else{
		$(selector + '-entree').removeClass().addClass(codec[code]);
	    }
	    if(result.anticipe){
		$(selector + '-sortie').removeClass().addClass('DA');
	    }else{
		$(selector + '-sortie').removeClass().addClass(codec[code]);
	    }
	    $(selector + '-pause').removeClass().addClass(codec[code]);
	    $(selector + '-repas').removeClass().addClass(codec[code]);

	    // Appel des fonctions de démarrage pour les mises a jour de l'interface
	    // Ligne
	    calculRow(id);
	    calculateCol(id, <?php echo $site; ?>, '<?php echo $lundi; ?>');
	});
	ajaxSave.fail(function(){
	    alert("Une erreur est survenue lors de la sauvegarde");
	});
	// Ferméture
	$(".rhPopover").remove();
    }
    function changeCode(newCode) {
	$('#data-code').val(newCode);
	$('.selected').removeClass('selected');
	$('#code-' + newCode).addClass('selected');

	// Vérification des horaires
	verifyHour();

	// Affichage du menu PRDA
	if(newCode == <?php echo XRules::ProblemeRetardDepartAnticipe ?>){
	    showPRDA(true);
	}else{
	    showPRDA(false);
	}

	// Règle de Gestion
	switch (newCode) {
	    case <?php echo XRules::Present ?>:
		// Chargement des valeurs par défauts
		loadDefaultValue();
		break;
	    case <?php echo XRules::CongePaye; ?>:
		// Pas de pause pas de Repas:
		noPauseAndRepas();
		// Les heures sont placé en sorte que le temps du congé sont réels
		defineHour('<?php echo $entreeDefaut; ?>', '<?php echo $sortieDefaut; ?>');
		// Info
		affCP(true);
		break;
	    case <?php echo XRules::NeTravaillePas; ?>:
		// Pas de pause ni de repas
		noPauseAndRepas();
		// Remise à Zéro des heures
		RAZHour();
		affCP(false);
		break;
	    case <?php echo XRules::Indisponible; ?>:
		// Pas de repas ni de pause
		noPauseAndRepas();
		// RAZ
		RAZHour();
		affCP(false);
		break;
	    case <?php echo XRules::Absent; ?>:
		// Avec Pause
		withPause();
		// Pas de Repas
		noRepas();
		affCP(false);
		break;
	    case <?php echo XRules::ProblemeRetardDepartAnticipe; ?>:
		// On laisse la pause et le repas
		affCP(false);
		// On affiche le menu special PRDA
		break;
	    case <?php echo XRules::CongeSansSolde; ?>:
		// Pas de repas ni pause
		noPauseAndRepas();
		// RAZ
		RAZHour();
		affCP(false);
		break;
	    case <?php echo XRules::ArretMaladie1; ?>:
		// Pas de Repas ni Pause
		noPauseAndRepas();
		affCP(false);
		break;
	    case <?php echo XRules::ArretMaladie2; ?>:
		// Pas de Repas
		noRepas();
		affCP(false);
		break;
	    case <?php echo XRules::CongePayeExceptionnel ?>:
		// Pas de pause ni Repas
		noPauseAndRepas();
		// Les heures sont à définir
		defineHour('<?php echo $entreeDefaut; ?>', '<?php echo $sortieDefaut; ?>');
		affCP(true);
		break;
	    case <?php echo XRules::CongeMaternite; ?>:
		// Pas de pause ni Repas
		noPauseAndRepas();
		// Les heures sont à définir
		defineHour('<?php echo $entreeDefaut; ?>', '<?php echo $sortieDefaut; ?>');
		affCP(true);
		break;
	    case <?php echo XRules::CongeMaternitePere; ?>:
		// Pas de pause ni Repas
		noPauseAndRepas();
		// Les heures sont à définir
		defineHour('<?php echo $entreeDefaut; ?>', '<?php echo $sortieDefaut; ?>');
		affCP(true);
		break;
	    case <?php echo XRules::AccidentTravail; ?>:
		// Pas de pause ni Repas
		noPauseAndRepas();
		affCP(false);
		break;
	    case <?php echo XRules::EcoleFormationIntegration; ?>:
		// Avec Pause et Repas
		withPause();
		withRepas();
		// Les heures à définir
		defineHour('08:00', '15:30');
		affCP(false);
		break;
	    case <?php echo XRules::EcoleFormationEmploye; ?>:
		// Sans Pause et Repas
		noPauseAndRepas();
		affCP(false);
		break;
	    case <?php echo XRules::EcoleFormationAlternance; ?>:
		// Sans Pause et Repas
		noPauseAndRepas();
		affCP(false);
		break;
	    case <?php echo XRules::Fermer; ?>:
		// Sans Pause et Repas
		noPauseAndRepas();
		// RAZ
		RAZHour();
		affCP(false);
		break;
	    case <?php echo XRules::Ferie1; ?>:
		// Sans Pause et Repas
		noPauseAndRepas();
		// Les heures sont a définir
		defineHour('<?php echo $entreeDefaut; ?>', '<?php echo $sortieDefaut; ?>');
		affCP(true);
		break;
	    case <?php echo XRules::Ferie2; ?>:
		// Touche à rien
		affCP(false);
		break;
	    case <?php echo XRules::Ferie3; ?>:
		// Touche à rien
		affCP(false);
		break;
	    case <?php echo XRules::Inconnue; ?>:
	    default:
		// On ne fait rien
		affCP(false);
		break;
	}

	return false;
    }
    function RAZHour() {
	// Entree Heure à Zéro
	$('#entree_heure option:selected').removeAttr('selected');
	$('#entree_heure option').each(function() {
	    if ($(this).val() === '00') {
		$(this).attr('selected');
		return false;
	    }
	});
	// Entree Minute à zéro
	$('#entree_minute option:selected').removeAttr('selected');
	$('#entree_minute option').each(function() {
	    if ($(this).val() === '00') {
		$(this).attr('selected');
		return false;
	    }
	});
	// Sortie Heure à Zéro
	$('#sortie_heure option:selected').removeAttr('selected');
	$('#sortie_heure option').each(function() {
	    if ($(this).val() === '00') {
		$(this).attr('selected');
		return false;
	    }
	});
	// Sortie Minute à zéro
	$('#sortie_minute option:selected').removeAttr('selected');
	$('#sortie_minute option').each(function() {
	    if ($(this).val() === '00') {
		$(this).attr('selected');
		return false;
	    }
	});

	return false;
    }
    function noPause() {
	$("#pause").prop('checked', false);
    }
    function withPause(){
	$("#pause").prop('checked', true);
    }
    function noRepas() {
	$("#repas").prop('checked', false);
    }
    function withRepas(){
	$("#repas").prop('checked', true);
    }
    function noPauseAndRepas() {
	noPause();
	noRepas();
    }
    function withPauseAndRepas(){
	withPause();
	withRepas();
    }
    function Paye(p) {
	if (!p)
	    p = true;
	if (p === true) {
	    $('#paye').val(1);
	} else {
	    $('#paye').val(0);
	}
    }

    function showPRDA(show){
	if(show){
	    $('#heure-normal').hide('fast');
	    $('#heure-prda, #info-prda').show('normal');
	}else{
	    $('#heure-normal').show('normal');
	    $('#heure-prda, #info-prda').hide('fast');
	}
    }

    function displayPRDA(){
	// Heure de retard
	retardHeure = $('#retard_heure option:selected').val();
	retardMinute = $('#retard_minute option:selected').val();
	// Heure de départ Anticipé
	anticipeHeure = $('#anticipe_heure option:selected').val();
	anticipeMinute = $('#anticipe_minute option:selected').val();
	// Entree Référence
	entreeHeureRef = $('#entree_heure_ref option:selected').val();
	entreeMinuteRef = $('#entree_minute_ref option:selected').val();
	// Sortie Référence
	sortieHeureRef = $('#sortie_heure_ref option:selected').val();
	sortieMinuteRef = $('#sortie_minute_ref option:selected').val();
	// Temps
	entreeHeure = parseInt(entreeHeureRef);
	entreeMinute = parseInt(entreeMinuteRef);
	
	sortieMinute = parseInt(sortieMinuteRef);
	sortieHeure = parseInt(sortieHeureRef);
	
	retardHeure = parseInt(retardHeure);
	retardMinute = parseInt(retardMinute);
	
	anticipeHeure = parseInt(anticipeHeure);
	anticipeMinute = parseInt(anticipeMinute);

	// Ajout pour un retard
	entreeM = entreeMinute + retardMinute;
	entreeH = entreeHeure + retardHeure;
	if(entreeM >= 60){
	    entreeH++;
	    entreeM = entreeM - 60;
	}
	// Soustraction pour un départ anticipe
	//alert('Sortie : ' + sortieHeure + ':' + sortieMinute + ', Départ Anticipé : ' + anticipeHeure + ':' + anticipeMinute);
	if(sortieMinute < anticipeMinute){
	    // Soustraction d'heure
	    sortieHeure--;
	    if(sortieHeure < 0){
		alert("ERREUR : \nL'heure de sortie est inférieur à l'heure d'entrée!");
		return false;
	    }
	    sortieMinute+= 60;
	}
	sortieM = sortieMinute - anticipeMinute;
	sortieH = sortieHeure - anticipeHeure;
	if(sortieH < 0){
	    alert("ERREUR : \nL'heure de sortie est inférieur à l'heure d'entrée!!");
	    return false;
	}
	// Traitement des heures minutes
	entreeHour = (entreeH < 10) ? '0' + entreeH : '' + entreeH;
	entreeMinute = (entreeM < 10) ? '0' + entreeM : '' + entreeM;
	sortieHour = (sortieH < 10) ? '0' + sortieH : '' + sortieH;
	sortieMinute = (sortieM < 10) ? '0' + sortieM : '' + sortieM;
	// Définition des heures d'entrée et sortie réel
	affEntree = entreeHour + ':' + entreeMinute;
	affSortie = sortieHour + ':' + sortieMinute;
	defineHour(affEntree, affSortie);
	// Affichage pour information
	$('#entree_reel').text(affEntree);
	$('#sortie_reel').text(affSortie);
	// Affectation des informations
	$('#data-refEntree').val(entreeHeureRef + ':' + entreeMinuteRef);
	$('#data-refSortie').val(sortieHeureRef + ':' + sortieMinuteRef);
    }

    function defineHour(entree, sortie){
//	alert('entree ' + entree + ' sortie ' + sortie);
	entreeH = entree.substr(0, 2);
	entreeM = entree.substr(3, 2);
	sortieH = sortie.substr(0, 2);
	sortieM = sortie.substr(3, 2);
//	alert('H ' + entreeH + ' MN ' + entreeM);
//	alert('H ' + sortieH + ' MN ' + sortieM);
	// Heure Entree
	$("#entree_heure option").each(function(){
	    if($(this).val() === entreeH){
		$(this).prop('selected', 'selected');
		return false;
	    }
	});
	// Minute Entree
	$("#entree_minute option").each(function(){
	    if($(this).val() === entreeM){
		$(this).prop('selected', 'selected');
		return false;
	    }
	});
	// Heure Sortie
	$("#sortie_heure option").each(function(){
	    if($(this).val() === sortieH){
		$(this).prop('selected', 'selected');
		return false;
	    }
	});
	// Minute Sortie
	$("#sortie_minute option").each(function(){
	    if($(this).val() === sortieM){
		$(this).prop('selected', 'selected');
		return false;
	    }
	});
    }

    function affCP(yes){
	return false;
	if(yes){
	    $('#CP').show('normal');
	}else{
	    $('#CP').hide('normal');
	}
    }

    function verifyHour(){
	// Code
	code = $('#data-code').val();
	code = parseInt(code);
	if(code === <?php echo XRules::CongePaye; ?> ||
		code === <?php echo XRules::CongeMaternite; ?> ||
		code === <?php echo XRules::CongePayeExceptionnel; ?> ||
		code === <?php echo XRules::CongeSansSolde; ?> ||
		code === <?php echo XRules::Absent; ?> ||
		code === <?php echo XRules::AccidentTravail; ?> ||
		code === <?php echo XRules::ArretMaladie1; ?> ||
		code === <?php echo XRules::ArretMaladie2; ?> ||
		code === <?php echo XRules::CongeMaternitePere; ?> ||
		code === <?php echo XRules::Ferie1; ?> ||
		code === <?php echo XRules::Fermer; ?> ||
		code === <?php echo XRules::Indisponible; ?> ||
		code === <?php echo XRules::NeTravaillePas; ?>
	    ){
	    return false;
	    }
	// Récupération des heures
	entree = $('#entree_heure option:selected').val() + ':' + $("#entree_minute option:selected").val();
	sortie = $('#sortie_heure option:selected').val() + ':' + $("#sortie_minute option:selected").val();
	// Traitement Ajax
	ajax = $.ajax({
	    type: 'post',
	    async: false,
	    url : '<?php echo $this->url('RHX/default', array('controller'	 => 'planning', 'action'	 => 'verifyHour')) ?>',
	    data: '&entree=' + entree + '&sortie=' + sortie
	});
	ajax.success(function(data){
	    if(data.pause){
		withPause();
	    }

	    if(data.repas){
		withRepas();
	    }
	    // Changement des heures plannings
	    //$('#sortie_heure').hide().html(data.heureSortie).fadeIn('fast');
	});
	ajax.error(function(){});
    }
    function loadDefaultValue(){
	defineHour('<?php echo $this->entreeRef ?>', '<?php echo $this->sortieRef; ?>');
	verifyHour();
    }
</script>


<style type="text/css">
    .info-container{
	margin: auto 2px;
	border-top: solid 1px #ededed;
	border-bottom: solid 1px #ededed;
    }
    .info-name{
	font-size: 1.2em;
	font-weight: bolder;
	text-transform: capitalize;
    }
    .info-title{
	text-decoration: underline;
	font-weight: bold;
    }
    .info-value{
	font-style: italic;
    }
    .heure-title{
	font-weight: bold;
	text-decoration: underline;
    }
    .section-title{
	display: block;
	font-size: 0.9em;
	font-weight: bold;
	text-transform: uppercase;
    }
    .heure-value{
	font-weight: bolder;
    }
    .btn-next, .btn-prev{
	font-size: 0.8em;
    }
    .btn-next{
	float:right;
    }
    .btn-prev{
	float:left;
    }
</style>